﻿using System;
using System.Windows;
using System.Windows.Controls;
using DevExpress.Xpf.Core;
using QuanLyKho.Report;
using DevExpress.Xpf.Printing;
using DevExpress.Xpf.Docking;
using QuanLyKho.Server.BLL;
using QuanLyKho.Server;
using System.Collections.Generic;
using QuanLyKho.Server.Dto;


namespace QuanLyKho
{
    /// <summary>
    /// Interaction logic for frmThongKeTongBNChayThan.xaml
    /// </summary>
    public partial class ucThongKeTonKho : UserControl
    {
        #region Fields

        TonKhoThuocBLL tonKhoThuocBLL;
        List<TonKhoDto> listTonKho;
        DateTime tuNgay;
        DateTime denNgay;

        #endregion

        public ucThongKeTonKho()
        {
            InitializeComponent();
            listTonKho = new List<TonKhoDto>();
            tonKhoThuocBLL = new TonKhoThuocBLL();
            //calendar.rdbTheoNgay.IsEnabled = false;
            //calendar.rdbTheoQuy.IsEnabled = false;
            //calendar.rdbTheoThang.IsChecked = true;
            deNgayChotSo.DateTime = DateTime.Now;
        }

        private void btnDong_Click(object sender, RoutedEventArgs e)
        {
            DockLayoutManager dockLayoutManager = this.Parent as DockLayoutManager;
            BaseLayoutItem bli = dockLayoutManager.ActiveMDIItem;
            if (bli != null)
            {
                dockLayoutManager.DockController.Close(bli);
            }
        }

        private void btnThongKe_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                tuNgay = calendar.StartDate;
                denNgay = calendar.EndDate;
                rptTonKho report = new rptTonKho();
                listTonKho = tonKhoThuocBLL.ThongKeTonKho(string.Empty, tuNgay, denNgay);
                gridThongKe.ItemsSource = listTonKho;
                gridThongKe.RefreshData();

                // Cho phép thực hiện nút In phiếu
                btnInPhieu.IsEnabled = true;

                // Kiểm tra có được chốt sổ hay không để hiển thị nút chốt sổ
                if(tonKhoThuocBLL.LaDuocPhepChotSo(deNgayChotSo.DateTime))
                {
                    btnChotSo.IsEnabled = true;
                }
                else
                {
                    btnChotSo.IsEnabled = false;
                }
            }
            catch (Exception)
            {
                DXMessageBox.Show("Thống kê không thành công", "Thông báo", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }

        private void btnInPhieu_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                rptTonKho report = new rptTonKho();
                report.DataSource = listTonKho;
                report.BindHeader(tuNgay, denNgay);
                report.BindDetails();
                report.ShowPreviewDialog();
            }
            catch (Exception ex)
            {
                DXMessageBox.Show("In phiếu không thành công", "Thông báo", MessageBoxButton.OK, MessageBoxImage.Error);
                DXMessageBox.Show(ex.Message, "Thông báo", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }

        private void btnChotSo_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (DXMessageBox.Show("Sau khi chốt sổ các thông tin được chốt sổ sẽ khóa không được phép thay đổi \nBạn có chắc chắn không?"
                                        , "Câu hỏi", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
                {
                    tonKhoThuocBLL.CapNhatChotSo(denNgay, deNgayChotSo.DateTime, listTonKho);
                    btnChotSo.IsEnabled = false;
                    DXMessageBox.Show("Chốt sổ thành công", "Thông báo", MessageBoxButton.OK, MessageBoxImage.Information);
                }
            }
            catch (Exception ex)
            {
                DXMessageBox.Show("Chốt sổ không thành công", "Thông báo", MessageBoxButton.OK, MessageBoxImage.Error);
                DXMessageBox.Show(ex.Message, "Thông báo", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }

        private void deNgayChotSo_EditValueChanged(object sender, DevExpress.Xpf.Editors.EditValueChangedEventArgs e)
        {
            if (e.NewValue != null && listTonKho.Count > 0)
            {
                // Kiểm tra có được chốt sổ hay không để hiển thị nút chốt sổ
                if (tonKhoThuocBLL.LaDuocPhepChotSo(Convert.ToDateTime(e.NewValue)))
                {
                    btnChotSo.IsEnabled = true;
                }
                else
                {
                    btnChotSo.IsEnabled = false;
                }
            }
            else
            {
                btnChotSo.IsEnabled = false;
            }
        }
    }
}
